﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Security.Cryptography;
namespace GestorDeFlotasDesktop.Cliente
{
    public partial class Cliente : MasterPage
    {
        //Form Ventana_Padre;
        ArrayList array = new ArrayList();
        Form ventanPadre;
        public capaDatos.SQLSyntaxisGeneration instanciaDatos = new capaDatos.SQLSyntaxisGeneration();
        DataTable dtgral;
        ArrayList parametrosSql = new ArrayList();

        public Cliente(Form ventanaParam)
        {
            InitializeComponent();
            ocultarMenu(ref ventanPadre, ventanaParam);
            chUserHab.Checked = true;
        }


        private void Cliente_Load(object sender, EventArgs e)
        {
            pnDatos.Visible = false;
            dataGridView1.Columns[0].Visible = false;
        }

        private void btAlta_Click(object sender, EventArgs e)
        {
            BTBaja.Text = "Dar Alta";
            pnDatos.Visible = true;
            btAlta.Visible = true;

            if (btAlta.Text == "Confirmar") 
            {
                
                parametrosSql.Clear();
                if (!(ConfirmarCamposObligatorios()))
                {
                    return;
                }
                btAlta.Visible = false;
                parametrosSql = parametrosStoredProcedure(paramsNames("dni", "nameCli", "apellidoCli", "telCli", "direccionCli", "MailCli", "fechaNacCli"), paramsValues(txtDni.Text, txtName.Text, txtApellido.Text,txtTelefono.Text , darDireccion(), txtMail.Text, fechaNacimiento()));
                dtgral = instanciaDatos.executeSp("PELUSA.Modificar_Cliente", parametrosSql);
               
                if (confirmarOperacion(dtgral)) {
                    mensajeUpdate();
                    btAlta.Visible = true;
                    btAlta.Text = "Alta";
                    btCancelar.Visible = true;
                    BTBaja.Visible = true;
                    BTBaja.Text = "Baja";
                }

              }               
        }

    
        private void modificarCampos(int numeroFila)
        {  // posicion 0 primera columna, prosicion comum,count - 1 ultima columna

            txtName.Text = Convert.ToString(dtgral.Rows[numeroFila].ItemArray[0]);
            txtApellido.Text = Convert.ToString(dtgral.Rows[numeroFila].ItemArray[1]);
            txtDni.Text = Convert.ToString(dtgral.Rows[numeroFila].ItemArray[2]);
            txtMail.Text = Convert.ToString(dtgral.Rows[numeroFila].ItemArray[3]);
            txtTelefono.Text   = Convert.ToString(dtgral.Rows[numeroFila].ItemArray[4]);
            mostrarFechaNacimiento(Convert.ToString(dtgral.Rows[numeroFila].ItemArray[5]));
            mostrarDireccion( Convert.ToString(dtgral.Rows[numeroFila].ItemArray[6]));
        }


        private void BTBaja_Click(object sender, EventArgs e)
        {

            if (BTBaja.Text == "Dar Alta")
            {   btAlta.Visible = false;
                parametrosSql.Clear();

                if (ConfirmarCamposObligatorios() == false )
                {
                    return;
                }
                parametrosSql = parametrosStoredProcedure(paramsNames("dni", "nameCli", "apellidoCli", "telCli", "direccionCli", "MailCli","fechaNacCli"), paramsValues(txtDni.Text,txtName.Text,txtApellido.Text,Convert.ToInt32(txtTelefono.Text),darDireccion(), txtMail.Text,fechaNacimiento()));
                dtgral = instanciaDatos.executeSp("PELUSA.Insert_Cliente", parametrosSql);
                    
                if (confirmarOperacion(dtgral)) {
                  
                    mensajeInsert();
                }
               
            }
                else
                { chUserHab.Checked = false; }
            if (!(ConfirmarCamposObligatorios()))
            {
                return;
            }
        
         }
        private Boolean ConfirmarCamposObligatorios()
        {

            string mensaje = "Debe completar los siguiente campos:" + "\n";;
            foreach (Control control in this.Controls)
            {

                if (control.GetType().FullName == "System.Windows.Forms.TextBox" && control.Text == string.Empty)
                {

                    mensaje =  mensaje + control.Name.Substring(3) + "\n";
                }
            }
            foreach (Control control in pnDatos.Controls)
            {
                if (control.GetType().FullName == "System.Windows.Forms.TextBox" && control.Text == string.Empty)
                {

                    mensaje =  mensaje + control.Name.Substring(3) + "\n";
                }
            }

            if (mensaje != "Debe completar los siguiente campos:\n")
            {
                MessageBox.Show(mensaje);
                return false;
            }
            { return true; }
            // devuelve true si no falta datos por completar 
        }

        private void dataGridView1_CellClick_1(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0){
                return;
            };
                
            setearCheckBox(e.RowIndex, array, dataGridView1, pnDatos, btAlta);
            modificarCampos(e.RowIndex );
          
            BTBaja.Visible = false;
         
        }

    
        private void Cliente_FormClosing(object sender, FormClosingEventArgs e)
        {
            ventanPadre.Visible = true;
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void BtbBuscar_Click(object sender, EventArgs e)
        {
          
            int dni;

            if (txtDni.Text == "")
            {

                dni = 0;
            }
            else
            {
                dni = int.Parse(txtDni.Text);
            }
            parametrosSql.Clear();
            parametrosSql = parametrosStoredProcedure(paramsNames("dni", "nameCli", "apellidoCli"), paramsValues(dni, txtName.Text, txtApellido.Text));

            dtgral = instanciaDatos.executeSp("PELUSA.buscar_Cliente", parametrosSql);
            this.dataGridView1.DataSource = dtgral;



            
        }

        private string darDireccion()
        {
            string direccion;

            direccion = txtcalle.Text + (char)32 + txtnro.Text + "|" + txtlocalidad.Text + "|" + txtdpto.Text + "|" + txtPiso.Text + "|" + txtCP.Text;
            return direccion;
        }

        private void mostrarDireccion(string direccion) { 
          string calleCompleta = direccion.Split('|')[0];

            if(direccion.Split('|').Count() > 1){
          txtnro.Text = calleCompleta.Substring(calleCompleta.Length - 4);
             txtcalle.Text  = calleCompleta.Substring(0,calleCompleta.Length - 4);
             txtlocalidad.Text = direccion.Split('|')[1] ;
            txtdpto.Text = direccion.Split('|')[2] ;
            txtPiso.Text = direccion.Split('|')[3];
            txtCP.Text = direccion.Split('|')[4] ;


            }
            else
            {
                txtnro.Text = direccion.Substring(direccion.Length - 4);
                txtcalle.Text = direccion.Substring(0, direccion.Length - 4);
        }
                

        }
        private void mostrarFechaNacimiento(string fechaN) {
             

            txtDia.Text = fechaN.Split('/')[0];
            txtMes.Text = fechaN.Split('/')[1];
            txtAnio.Text = fechaN.Split('/')[2].Substring(0, 4);
        }

        private void btCancelar_Click(object sender, EventArgs e)
        {
            /* Vuelve al incio */
            btAlta.Visible = true;
            btAlta.Text = "Alta";
            BTBaja.Visible = true;
            BTBaja.Text = " Baja ";
            pnDatos.Visible = false;
            limpiarTextBox();
            dataGridView1.DataSource = "";
            dataGridView1.DataMember = "";
            pnDatos.Visible = false;
        }
        private string fechaNacimiento()
        {
        string fecha ;
          fecha = txtDia.Text +"/" +txtMes.Text  + "/" + txtAnio.Text  ;
          return fecha;
        }

        private void chUserHab_CheckedChanged(object sender, EventArgs e)
        { 
               
        }

        private void chUserHab_Click(object sender, EventArgs e)
        {
            parametrosSql.Clear();
            int valorBool;
            int dni;

            if (txtDni.Text == "")
            {

                dni = 0;
            }
            else
            {
                dni = int.Parse(txtDni.Text);
            }

            if (chUserHab.Checked) { valorBool = 1; } else { valorBool = 0; };

            parametrosSql = parametrosStoredProcedure(paramsNames("CliHabilitado", "DniCli"), paramsValues(valorBool, dni));
            dtgral = instanciaDatos.executeSp("PELUSA.Hab_DesHab_Cliente", parametrosSql);
          if (confirmarOperacion(dtgral))
           {
               mensajeDelete(valorBool);
           }
        }

        private void btbLimpiar_Click(object sender, EventArgs e)
        {
            limpiarTextBox();
        }


        private void limpiarTextBox()
        {
            dataGridView1.DataSource = "";
            dataGridView1.DataMember = "";
            foreach (Control control in this.Controls)
            {

                if (control.GetType().FullName == "System.Windows.Forms.TextBox" | control.GetType().FullName == "System.Windows.Forms.ComboBox")
                {

                    control.Text = "";
                }
            }
            foreach (Control control in pnDatos.Controls)
            {
                if (control.GetType().FullName == "System.Windows.Forms.TextBox" | control.GetType().FullName == "System.Windows.Forms.ComboBox")
                {
                    control.Text = "";
                }
            }
        }

      
    }
}

